package com.winchain.chainbill.bill.biz.receive.cmd;

import com.shell.bee.acct.transaction.po.AcctTxRec;
import com.shell.bee.acct.transaction.service.AcctTxRecService;
import com.shell.framework.command.CommandContext;
import com.winchain.chainbill.bill.base.po.CbRcv;
import com.winchain.chainbill.bill.base.po.CbRec;
import com.winchain.chainbill.bill.biz.Bill;
import com.winchain.chainbill.bill.biz.receive.service.BillRcvTranService;
import com.winchain.chainbill.bill.biz.send.cmd.TxCmd;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class BillRcvTranCmd extends TxCmd<CbRcv> {
	@Autowired
	private BillRcvTranService billRcvTranService;
	@Autowired
	private AcctTxRecService AcctTxRecService;

	public boolean execute(CommandContext<Bill<CbRcv>> context) throws Exception {
		boolean timeout = ((Boolean) context.getValue("Timeout")).booleanValue();
		if (!timeout) {
			AcctTxRec tran = getAcctTxRec(context);
			this.AcctTxRecService.save(tran);
			context.setValue("acctTxRec", tran);
		}
		return false;
	}

	private AcctTxRec getAcctTxRec(CommandContext<Bill<CbRcv>> context) {
		String bizType = (String) context.getValue("bizType");
		CbRec record = ((Bill) context.getSource()).getRec();
		CbRcv cbRcv = (CbRcv) ((Bill) context.getSource()).getSource();
		String txAbs = "����������";
		return this.billRcvTranService.getAcctTxRec(record, cbRcv, bizType, txAbs);
	}
}
